今天主要針對gRCP在Istio Service Mesh的應用,有碰到的問題跟大家分享
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: example
spec:
  hosts:
  - example-host
  http:
  - route:
    - destination:
        host: example-host
        port:
          number: 90
一定要設定VirtualService這樣Kubernetes Service才會被納進Istio Service Mesh管理,裡面的host必須是之前有提到Kubernetes CoreDNS能解析的。
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: example
spec:
  host: example-host
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
因為Pod有可能會Scaling多個,因此需要添加DestinationRule並且設定
trafficPolicy的loadBalancer,這樣VirtualService以及DestinationRule設定好,gRPC Service就可以被完整的納入Istio Service Mesh管理,小提醒Scaling建議使用單數。偶數在loadBalancer的演算法判斷有時候會出現異常。
如果要在Istio Service Mesh中使用gRPC服務一定要同時在Istio設定
DestinationRule以及VirtualService。